package com.storage.system.mapper;

import com.storage.system.domain.StorageProduct;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 产品 数据层
 *
 * @author ruoyi
 * @date 2019-08-27
 */
public interface StorageProductMapper {
    /**
     * 查询产品信息
     *
     * @param id 产品ID
     * @return 产品信息
     */
    public StorageProduct selectStorageProductById(Long id);

    /**
     * 查询产品列表
     *
     * @param storageProduct 产品信息
     * @return 产品集合
     */
    public List<StorageProduct> selectStorageProductList(StorageProduct storageProduct);

    /**
     * 新增产品
     *
     * @param storageProduct 产品信息
     * @return 结果
     */
    public int insertStorageProduct(StorageProduct storageProduct);

    /**
     * 修改产品
     *
     * @param storageProduct 产品信息
     * @return 结果
     */
    public int updateStorageProduct(StorageProduct storageProduct);

    /**
     * 删除产品
     *
     * @param id 产品ID
     * @return 结果
     */
    public int deleteStorageProductById(Long id);

    /**
     * 批量删除产品
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteStorageProductByIds(String[] ids);

    /**
     * 根据spuCode查找产品
     *
     * @param productSpuCode
     * @return
     */
    StorageProduct selectStorageProduct(@Param("createUserId") Long userId, @Param("ownerType") Integer ownerType,
                                        @Param("productSpuCode") String productSpuCode);

    /**
     * 查询分页数据
     *
     * @param storageProduct
     * @param start
     * @param pageSize
     * @return
     */
    List<StorageProduct> queryPageList(@Param("product") StorageProduct storageProduct, @Param("start") Integer start,
                                       @Param("pageSize") Integer pageSize);

    /**
     * 查询分页count
     *
     * @param storageProduct
     * @return
     */
    Long queryPageCount(StorageProduct storageProduct);

    /**
     * 查询分页数据
     *
     * @param storageProduct
     * @param start
     * @param pageSize
     * @return
     */
    List<StorageProduct> queryPageListByColor(@Param("product") StorageProduct storageProduct, @Param("start") Integer start,
                                       @Param("pageSize") Integer pageSize);

    /**
     * 查询分页count
     *
     * @param storageProduct
     * @return
     */
    Long queryPageCountByColor(@Param("product") StorageProduct storageProduct);
}